home *** CD-ROM | disk | FTP | other *** search
/ Shareware Grab Bag / Shareware Grab Bag.iso / 098 / rbsmsg21.arc / RBSMSG21.BAS (.txt) < prev   
Encoding:
GW-BASIC  |  1985-10-23  |  14.8 KB  |  355 lines

  1. 10  '+---------------------------------------------------------+
  2. 20  '|                    RBBSMSG.BAS                          |
  3. 30  '|        by Wayne Boyd  305 Schermerhorn Street           |
  4. 40  '|                Brooklyn, NY 11217                       |
  5. 50  '|       SYSOP for DIAL-A-GURU BBS (718) 624-8614          |
  6. 60  '|   Donated to the public domain on the condition that    |
  7. 70  '|   it not be altered or tampered with in any way and     |
  8. 80  '|  that the credits and opening messages not be removed.  |
  9. 90  '+---------------------------------------------------------+
  10. 100  VER=2.1                        '<---Latest version number
  11. 110  RELEASE$="October 22nd, 1985"  '<---Release date of this version
  12. 120  IF RAMA THEN 140
  13. 130  GOTO 3520
  14. 140  ON ERROR GOTO 190
  15. 150  OPEN"i",#1,"rbbs-pc.def"
  16. 160  LINE INPUT#1,S$
  17. 170  INPUT #1,MAINFILE$
  18. 180  GOTO 220
  19. 190  CLOSE:SOUND 50,1:SOUND 1000,1:SOUND 300,1:BEEP
  20. 200  COLOR 31:PRINT"++ RBBS-PC.DEF NOT FOUND ON DEFAULT DRIVE! ++":COLOR 7,0
  21. 210  SYSTEM
  22. 220  ON ERROR GOTO 0
  23. 230  COLOR 7,0
  24. 240  ROW=5:COL=28
  25. 250  KEY OFF:CLS:COLOR 0,15
  26. 260  DISP$=CHR$(201)+STRING$(35,205)+CHR$(187):GOSUB 610
  27. 270  DISP$=CHR$(186)+" RBBS-PC MESSAGE EDITOR and COPIER "+CHR$(186):GOSUB 610
  28. 280  DISP1$="Version"+STR$(VER)+"  "+RELEASE$
  29. 290  IF LEN(DISP1$)<35 THEN DISP1$=" "+DISP1$+" ":GOTO 290
  30. 300  IF LEN(DISP1$)>35 THEN DISP1$=LEFT$(DISP1$,33)
  31. 310  DISP$=CHR$(186)+DISP1$+CHR$(186):GOSUB 610
  32. 320  DISP$=CHR$(186)+"           by Wayne Boyd           "+CHR$(186):GOSUB 610
  33. 330  DISP$=CHR$(204)+STRING$(35,205)+CHR$(185):GOSUB 610
  34. 340  DISP$=CHR$(186)+" If you are using this program and "+CHR$(186):GOSUB 610
  35. 350  DISP$=CHR$(186)+" find it useful, may I suggest you "+CHR$(186):GOSUB 610
  36. 360  DISP$=CHR$(186)+"  consider a donation of a measly  "+CHR$(186):GOSUB 610
  37. 370  DISP$=CHR$(186)+"   $10 to the author's address:    "+CHR$(186):GOSUB 610
  38. 380  DISP$=CHR$(186)+"           Wayne Boyd              "+CHR$(186):GOSUB 610
  39. 390  DISP$=CHR$(186)+"    305 Schermerhorn Street,       "+CHR$(186):GOSUB 610
  40. 400  DISP$=CHR$(186)+" Brooklyn, NY 11217 .... Thank you "+CHR$(186):GOSUB 610
  41. 410  DISP$=CHR$(200)+STRING$(35,205)+CHR$(188):GOSUB 610:COLOR 15,0
  42. 420  DISP$="Distributed by DIAL-A-GURU BBS (718) 624-8614  24 hours 300/1200 bps"
  43. 430  GOSUB 610:COLOR 7,0
  44. 440  DISP$="This program will edit RBBS-PC CPC 5A message and conference base headers":GOSUB 610
  45. 450  DISP$="and allow individual messages to be copied from one message base into another.":GOSUB 610
  46. 460  DISP$="Now inappropriately placed messages can be safely copied into more":GOSUB 610
  47. 470  DISP$="appropriate "+CHR$(34)+"conference"+CHR$(34)+" sub-boards.":GOSUB 610
  48. 480  GOTO 640
  49. 490  '----------------------------------------------------------
  50. 500  'print dots to show processing
  51. 510  IF MAIL THEN RETURN
  52. 520  IF DISP1$="" GOTO 2020
  53. 530  COUNT=COUNT+1:IF COUNT=5 THEN COUNT=0 ELSE RETURN
  54. 540  PRINT".";:RETURN
  55. 550  '----------------------------------------------------------
  56. 560  'make pleasant sound
  57. 570  SOUND 40,0.5:SOUND 1000,0.5:SOUND 400,0.5
  58. 580  RETURN
  59. 590  '----------------------------------------------------------
  60. 600  'center display on 80 column screen
  61. 610  LOCATE CSRLIN,INT(40-LEN(DISP$)/2)):PRINT DISP$
  62. 620  RETURN
  63. 630  '----------------------------------------------------------
  64. 640  DIM MSGS(2024,2),CNG$(8),TMP$(12):PRINT
  65. 650  COLOR 15:PRINT"M)";:COLOR 7:PRINT"ain message base.  ";
  66. 660  COLOR 15:PRINT"J)";:COLOR 7:PRINT"ump to conference message base.  ";
  67. 670  COLOR 15:PRINT"Q)";:COLOR 7:PRINT"uit and exit to DOS.":PRINT:PRINT"Your selection: ";
  68. 680  A$=INPUT$(1):COLOR 15
  69. 690  IF A$="M" OR A$="m" THEN PRINT "Main message base":GOTO 740
  70. 700  IF A$="J" OR A$="j" THEN CONFERENCE=1:PRINT"Jump to conference":GOTO 740
  71. 710  IF A$="q" OR A$="Q" THEN PRINT"QUIT" ELSE GOSUB 570:GOTO 680
  72. 720  BEEP:PRINT"END PROGRAM AND RETURN TO DOS (";:COLOR 31:PRINT"Y/N";:COLOR 15:PRINT")? ";
  73. 730  A$=INPUT$(1):IF A$="y" OR A$="Y" THEN PRINT"Yup.":FOR A=1 TO 1500:NEXT:SYSTEM ELSE IF A$="N" OR A$="n" THEN PRINT"Not now buddy!":FOR A=1 TO 1500:NEXT:RUN ELSE BEEP:GOTO 730
  74. 740  COLOR 7:IF CONFERENCE THEN PRINT"ENTER name of conference to access: "; ELSE FILE$=MAINFILE$:GOTO 810
  75. 750  COLOR 15:LINE INPUT FILE$:COLOR 7
  76. 760  IF FILE$="" THEN GOSUB 570:PRINT:DISP$="++ NO INPUT FILE NAME ++":GOSUB 610:FOR A=1 TO 2000:NEXT:SYSTEM
  77. 770  IF CONFERENCE THEN I=INSTR(FILE$,"."):IF I=0 THEN FILE$=FILE$+"M.def"
  78. 780  FOR A=1 TO LEN(FILE$)
  79. 790  T=ASC(MID$(FILE$,A,1)):IF T>96 THEN T=T-32:MID$(FILE$,A,1)=CHR$(T)
  80. 800  NEXT
  81. 810  OPEN"R",#1,FILE$,128
  82. 820  IF LOF(1)=0 THEN GOSUB 570:PRINT:DISP$="++ FILE DOES NOT EXIST ++":GOSUB 610:CLOSE:KILL FILE$:FOR A=1 TO 1000:NEXT:RUN
  83. 830  '
  84. 840  '--------------> file exists, set field statements <---------------
  85. 850  '
  86. 860  FIELD#1,128 AS S$
  87. 870  PRINT:PRINT"Checking messages ";
  88. 880  GET#1,1:GOSUB 510
  89. 890  LE=VAL(MID$(S$,1,8))   'number of last message on system
  90. 900  CJ=VAL(MID$(S$,11,10))  'current caller number
  91. 910  REC1=VAL(MID$(S$,52,5))  'record number of first record in the USERS file
  92. 920  NUR=VAL(MID$(S$,57,5))  'record number of next available record in user file
  93. 930  HUR=VAL(MID$(S$,62,5))  'record number of last record in USERS file
  94. 940  FMR=VAL(MID$(S$,68,7))  'record number where first message begins
  95. 950  NMR=VAL(MID$(S$,75,7))  'record number of next available record in msg file
  96. 960  HMR=VAL(MID$(S$,82,7))  'record number of the last record in message file
  97. 970  GOSUB 510
  98. 980  IF LE=0 OR FMR=0 OR NMR=0 OR HMR=0 THEN CLOSE:PRINT:PRINT:DISP$="++ NOT A RBBS-PC MESSAGE FILE ++":GOSUB 610:GOSUB 570:CLOSE:FOR A=1 TO 2000:NEXT:RUN
  99. 990  '
  100. 1000  '-------------> read header record numbers into the array <-------------
  101. 1010  '        msgs(recordnumber,tosysop,fromsyop)
  102. 1020  MG=0   ' <--- incrementor to count messages
  103. 1030  NXTMSG=FMR  '<--- next header begins at this record number
  104. 1040  GET#1,NXTMSG
  105. 1050  MG=MG+1
  106. 1060  RD$=(MID$(S$,1,1))       'if rd$="*" message is read only
  107. 1070  MT=VAL(MID$(S$,2,4))     'message number of this message
  108. 1080  FI$=(MID$(S$,6,31))      'name of person message is from
  109. 1090  T$=(MID$(S$,37,21))      'name of person who message who message it to
  110. 1100  TM$=(MID$(S$,59,8))      'time of day msge was sent (HH:MM:SS)
  111. 1110  D$=(MID$(S$,67,9))       'date message was sent
  112. 1120  SUB$=(MID$(S$,76,25))    'subject of message
  113. 1130  PAS$=(MID$(S$,101,15))   'password for the message (if any)
  114. 1140  ACTIVE$=(MID$(S$,116,1)) 'active or killed indicator
  115. 1150  I=INSTR(TM$,":"):IF I=0 THEN MG=MG-1:PRINT "corrupt msg in"NXTMSG:ACTIVE$=CHR$(226):S1$=S$:MID$(S1$,116,1)=ACTIVE$:SYAMA=1:GOSUB 2730:NXTMSG=NXTMSG+1:GOTO 1040
  116. 1160  MSGLN=VAL(MID$(S$,117,6))  'number of 128 byte sectors in msg, incl hdr
  117. 1170  IF FETCH THEN RETURN ELSE MSGS(MT,0)=NXTMSG
  118. 1180  '-------> test if messages is active or killed here <--------
  119. 1190  '
  120. 1200  'end of test
  121. 1210  '
  122. 1220  IF LEFT$(T$,5)="SYSOP" THEN MAIL=MAIL+1
  123. 1230  IF MAIL=1 THEN PRINT:PRINT"Mail for the SYSOP: ";:MAIL=MAIL+1
  124. 1240  GOSUB 510                  'if no mail at this point, print dots
  125. 1250  IF LEFT$(T$,5)="SYSOP" THEN PRINT MT;:MSGS(MG,1)=MT
  126. 1260  IF LEFT$(FI$,5)="SYSOP" THEN MSGS(MG,2)=MT:SENT=SENT+1
  127. 1270  NXTMSG=NXTMSG+MSGLN     'next message begins at this point unless at end
  128. 1280  IF MT<LE THEN 1040 ELSE LMSG=MT
  129. 1290  PRINT:IF SENT=0 THEN 1390
  130. 1300  PRINT"Messages FROM you: ";
  131. 1310  FOR A=1 TO MG:IF MSGS(A,2) THEN PRINT MSGS(A,2);
  132. 1320  NEXT
  133. 1330  FETCH=FMR:GET#1,FMR:GOSUB 1060:IF DISP1$="" THEN 2020 ELSE FMSG=MT
  134. 1340  COLOR 15:PRINT:PRINT"Press any key to continue...";:AJ$=INPUT$(1):COLOR 7
  135. 1350  IF DISP1$="" THEN 2020
  136. 1360  '--------------> get message headers and edit <------------------
  137. 1370  '
  138. 1380  CLS
  139. 1390  PRINT CHR$(11);:DISP$="**************************************************":GOSUB 610
  140. 1400  IF FETCH=0 THEN BEEP:COLOR 15:PRINT"++ NO MESSAGES FOUND IN ";FILE$;" ++";:CLOSE:FOR A=1 TO 1000:NEXT:PRINT:PRINT"Press any key...";:A$=INPUT$(1):RUN
  141. 1410  GET#1,FETCH:GOSUB 1060
  142. 1420  CNG$(1)=STR$(MT):CNG$(2)=FI$:CNG$(3)=T$:CNG$(4)=SUB$:CNG$(5)=RD$:CNG$(6)=TM$:CNG$(7)=D$:CNG$(8)=PAS$
  143. 1430  COLOR 7:PRINT" 1: ";:COLOR 15:PRINT"     Message"CNG$(1);"  ";
  144. 1440  IF ASC(ACTIVE$)<>225 THEN PRINT "<D E L E T E D>";STRING$(30,32):COLOR 7 ELSE PRINT STRING$(30,32):COLOR 7
  145. 1450  PRINT" 2: ";:COLOR 15:PRINT"       From: ";:COLOR 7:PRINT CNG$(2);STRING$(30,32)
  146. 1460  PRINT" 3: ";:COLOR 15:PRINT"         To: ";:COLOR 7:PRINT CNG$(3);STRING$(35,32)
  147. 1470  PRINT" 4: ";:COLOR 15:PRINT"    Subject: ";:COLOR 7:PRINT CNG$(4);STRING$(35,32)
  148. 1480  PRINT" 5: ";:COLOR 15:PRINT"Read status: ";CNG$(5);:COLOR 7:IF CNG$(5)="*" THEN PRINT"<READ ONLY>"; ELSE PRINT"<OPEN>";
  149. 1490  PRINT STRING$(35,32)
  150. 1500  PRINT" 6: ";:COLOR 15:PRINT"       Time: ";:COLOR 7:PRINT CNG$(6);STRING$(35,32)
  151. 1510  PRINT" 7: ";:COLOR 15:PRINT"       Date:";:COLOR 7:PRINT CNG$(7);STRING$(35,32)
  152. 1520  PRINT" 8: ";:COLOR 15:PRINT"   Password: ";:COLOR 7:PRINT CNG$(8);STRING$(35,32)
  153. 1530  PRINT:COLOR 15:PRINT"PRESENTLY AT MESSAGE"MT;STRING$(35,32)
  154. 1540  IF ASC(ACTIVE$)=226 THEN PRINT" <D E L E T E D>";
  155. 1550  PRINT STRING$(35,32)
  156. 1560  COLOR 15:PRINT"S)";:COLOR 7:PRINT"how header for this message  ";
  157. 1570  COLOR 15:PRINT"G)";:COLOR 7:PRINT"et a specific message number  ";
  158. 1580  COLOR 15:PRINT"N)";:COLOR 7:PRINT"ext message"
  159. 1590  COLOR 15:PRINT"P)";:COLOR 7:PRINT"revious message  ";
  160. 1600  COLOR 15:PRINT"L)";:COLOR 7:PRINT"ast message   ";
  161. 1610  COLOR 15:PRINT"F)";:COLOR 7:PRINT"irst message  ";
  162. 1620  COLOR 15:PRINT"V)";:COLOR 7:PRINT"iew the message"
  163. 1630  COLOR 15:PRINT"E)";:COLOR 7:PRINT"dit header  ";
  164. 1640  COLOR 15:PRINT"D)";:COLOR 7:PRINT"elete / Undelete toggle  ";
  165. 1650  COLOR 15:PRINT"C)";:COLOR 7:PRINT"opy message  ";
  166. 1660  COLOR 15:PRINT"Q)";:COLOR 7:PRINT"uit message editor":PRINT
  167. 1670  PRINT "Selection:                           ":Y=CSRLIN-1:IF Y=23 THEN 1690
  168. 1680  PRINT STRING$(79,32);
  169. 1690  LOCATE Y,12:IF DISP1$="" THEN 2020
  170. 1700  A$=INPUT$(1):IF A$="" THEN GOSUB 570:GOTO 1700  ELSE IF Y<>17 THEN CLS
  171. 1710  IF A$="G" OR A$="g" THEN 1750 ELSE 1850
  172. 1720  '
  173. 1730  'get a specific record
  174. 1740  '
  175. 1750  COLOR 15:PRINT"Get a specific record"
  176. 1760  COLOR 7:PRINT "System has records from"FMSG"to"LMSG
  177. 1770  LINE INPUT "Record number (C/R to abort): ";RGET$
  178. 1780  RGET=VAL(RGET$):IF RGET=0 THEN 1390
  179. 1790  IF RGET<FMSG OR RGET>LMSG THEN BEEP:DISP$="++ Out of Range ++":GOSUB 610:GOTO 1670
  180. 1800  IF MSGS(RGET,0)=0 THEN BEEP:DISP$="++ No Message ++":GOSUB 610:GOTO 1530
  181. 1810  FETCH=MSGS(RGET,0):GOTO 1390
  182. 1820  '
  183. 1830  'view the record
  184. 1840  '
  185. 1850  IF A$="V" OR A$="v" THEN 1860 ELSE 2000
  186. 1860  COLOR 15:PRINT"View the Record":PRINT"ESCAPE key to abort":PRINT:COLOR 7
  187. 1870  FOR A=FETCH+1 TO FETCH+MSGLN-1
  188. 1880     GET#1,A
  189. 1890     FOR B=1 TO LEN(S$)
  190. 1900        T=ASC(MID$(S$,B,1))
  191. 1910        IF T<32 OR T>127 THEN PRINT ELSE PRINT CHR$(T);
  192. 1920        JE$=INKEY$:IF JE$=CHR$(27) THEN JQ=1:B=LEN(S$)
  193. 1930     NEXT B
  194. 1940     IF JQ THEN JQ=0:A=FETCH+MSGLN-1:PRINT:COLOR 15:PRINT"++ ABORTED ++"
  195. 1950  NEXT A:PRINT:COLOR 15:PRINT"Touch any key to continue...";:XR$=INPUT$(1):CLS
  196. 1960  COLOR 7:GOTO 1390
  197. 1970  '
  198. 1980  'Next record
  199. 1990  '
  200. 2000  IF A$="n" OR A$="N" THEN RGET=FETCH ELSE 2150
  201. 2010  COLOR 15:PRINT"NEXT RECORD":COLOR 7:GOTO 2080
  202. 2020  BEEP:CLS:COLOR 31:PRINT"THIS VERSION HAS BEEN TAMPERED WITH.
  203. 2030  COLOR 7,0:PRINT"CALL DIAL-A-GURU BBS (718) 624-8614 TO DOWNLOAD LATEST UNTAMPERED VERSION"
  204. 2040  PRINT"OR WRITE WAYNE BOYD, 305 SCHERMERHORN STREET, BROOKLYN, NY 11217"
  205. 2050  PRINT"AND INCLUDE $15 AND WE WILL SEND IT TO YOU ON DISK."
  206. 2060  PRINT"THANK YOU, AND DON'T REMOVE THIS NOTICE!"
  207. 2070  CLOSE:NEW
  208. 2080  RGET=MT
  209. 2090  IF RGET=LMSG THEN BEEP:COLOR 31:DISP$="++ LAST MESSAGE ++":GOSUB 610:COLOR 7:GOTO 1530
  210. 2100  RGET=RGET+1:IF MSGS(RGET,0)=0 THEN 2090
  211. 2110  FETCH=MSGS(RGET,0):GOTO 1390
  212. 2120  '
  213. 2130  'Previous record
  214. 2140  '
  215. 2150  IF A$="p" OR A$="P" THEN RGET=FETCH ELSE 2240
  216. 2160  COLOR 15:PRINT"PREVIOUS RECORD":COLOR 7
  217. 2170  RGET=MT
  218. 2180  IF RGET=FMSG THEN BEEP:COLOR 31:DISP$="++ FIRST MESSAGE ++":GOSUB 610:COLOR 7:GOTO 1530
  219. 2190  RGET=RGET-1:IF MSGS(RGET,0)=0 THEN 2180
  220. 2200  FETCH=MSGS(RGET,0):GOTO 1390
  221. 2210  '
  222. 2220  'First message
  223. 2230  '
  224. 2240  IF A$="F" OR A$="f" THEN FETCH=MSGS(FMSG,0) ELSE 2290
  225. 2250  COLOR 15:PRINT"FIRST RECORD":GOTO 1390
  226. 2260  '
  227. 2270  'last message
  228. 2280  '
  229. 2290  IF A$="L" OR A$="l" THEN FETCH=MSGS(LMSG,0) ELSE 2340
  230. 2300  COLOR 15:PRINT"LAST RECORD":GOTO 1390
  231. 2310  '
  232. 2320  'edit message
  233. 2330  '
  234. 2340  IF A$="e" OR A$="E" THEN COLOR 15:PRINT"EDIT MESSAGE" ELSE 2780
  235. 2350  PRINT"LINE NUMBER TO EDIT (C/R to abort): ";:CHANGE=1
  236. 2360  LNED$=INPUT$(1):LNED=VAL(LNED$):IF LNED$="" THEN 1430
  237. 2370  PRINT LNED$:IF LNED<2 OR LNED>8 THEN BEEP:GOTO 1390
  238. 2380  IF LNED=5 THEN 2490
  239. 2390  COLOR 15:PRINT"Old entry reads: ";:COLOR 7:PRINT CNG$(LNED)
  240. 2400  COLOR 15:PRINT"CHANGE LINE";LNED;"TO: ";:COLOR 7:LINE INPUT CNG$(LNED):DISP$=STRING$(50,"*"):CLS
  241. 2410  IF CNG$(LNED)="" THEN 2450
  242. 2420  FOR JK=1 TO LEN(CNG$(LNED)):W=ASC(MID$(CNG$(LNED),JK,1))
  243. 2430     IF W>96 THEN W=W-32:MID$(CNG$(LNED),JK,1)=CHR$(W)
  244. 2440  NEXT JK
  245. 2450  ON LNED GOTO 2360,2460,2470,2480,2490,2510,2520,2530
  246. 2460  LJ=31:GOTO 2570   'Message from:
  247. 2470  LJ=21:GOTO 2570   'Message to:
  248. 2480  LJ=25:GOTO 2570   'Subject:
  249. 2490  IF CNG$(LNED)="*" THEN CNG$(LNED)=" ":CNG$(8)=STRING$(15,32):GOTO 2650
  250. 2500  IF CNG$(LNED)=" " THEN CNG$(LNED)="*":CNG$(8)="^READ^         ":GOTO 2650
  251. 2510  LJ=8:GOTO 2550    'Time:
  252. 2520  LJ=9:GOTO 2550    'Date:
  253. 2530  LJ=15:GOTO 2570   'Password:
  254. 2540  '
  255. 2550  IF LEN(CNG$(LNED))<LJ THEN CNG$(LNED)=" "+CNG$(LNED):GOTO 2550
  256. 2560  IF LEN(CNG$(LNED))>LJ THEN CNG$(LNED)=RIGHT$(CNG$(LNED),LJ):GOTO 2590
  257. 2570  IF LEN(CNG$(LNED))<LJ THEN CNG$(LNED)=CNG$(LNED)+" ":GOTO 2570
  258. 2580  IF LEN(CNG$(LNED))>LJ THEN CNG$(LNED)=LEFT$(CNG$(LNED),LJ)
  259. 2590  IF LNED = 6 THEN I1$=MID$(CNG$(LNED),3,1):I2$=MID$(CNG$(LNED),6,1) ELSE 2620
  260. 2600  IF I1$ = ":" AND I2$ = ":" THEN 2650
  261. 2610  BEEP:PRINT"++ Improper format. ++";:FOR A=1 TO 1500:NEXT:GOTO 1380
  262. 2620  IF LNED <>7 THEN 2650
  263. 2630  I1$=MID$(CNG$(LNED),4,1):I2$=MID$(CNG$(LNED),7,1)
  264. 2640  IF I1$ = "-" AND I2$ = "-" THEN 2650 ELSE 2610
  265. 2650  S1$=S$:ON LNED GOTO 2360,2660,2670,2680,2690,2700,2710,2720
  266. 2660  MID$(S1$,6,31)=CNG$(LNED):GOTO 2730
  267. 2670  MID$(S1$,37,21)=CNG$(LNED):GOTO 2730
  268. 2680  MID$(S1$,76,25)=CNG$(LNED):GOTO 2730
  269. 2690  MID$(S1$,1,1)=CNG$(LNED):GOTO 2720
  270. 2700  MID$(S1$,59,8)=CNG$(LNED):GOTO 2730
  271. 2710  MID$(S1$,67,9)=CNG$(LNED):GOTO 2730
  272. 2720  MID$(S1$,101,15)=CNG$(8)
  273. 2730  LSET S$=S1$:IF SYAMA THEN PUT#1,NXTMSG ELSE PUT#1,FETCH
  274. 2740  IF SYAMA THEN SYAMA=0:RETURN ELSE 1390
  275. 2750  '
  276. 2760  'Quit message editor
  277. 2770  '
  278. 2780  IF A$="q" OR A$="Q" THEN COLOR 15:PRINT"QUIT EDITOR" ELSE 2850
  279. 2790  BEEP:PRINT"ARE YOU SURE (";:COLOR 31:PRINT"Y/N";:COLOR 15:PRINT")? ";
  280. 2800  QN$=INPUT$(1):IF QN$="y" OR QN$="Y" THEN PRINT"Yup.":GOSUB 510:CLOSE:FOR A=1 TO 1000:NEXT:RUN
  281. 2810  IF QN$="N" OR QN$="n" THEN PRINT"No way, Jose!":GOTO 1430 ELSE BEEP:GOTO 2800
  282. 2820  '
  283. 2830  'delete or undelete a message. (toggle back and fourth)
  284. 2840  '
  285. 2850  IF A$="D" OR A$="d" THEN COLOR 15:PRINT"DELETE/UNDELETE TOGGLED":COLOR 7 ELSE 2910
  286. 2860  T=ASC(ACTIVE$):IF T=225 THEN T=226 ELSE T=225
  287. 2870  ACTIVE$=CHR$(T)
  288. 2880  S1$=S$:MID$(S1$,116,1)=ACTIVE$:GOTO 2730
  289. 2890  '
  290. 2900  '
  291. 2910  IF A$="s" OR A$="S" THEN COLOR 15:PRINT"SHOW HEADER":COLOR 7:GOTO 1370
  292. 2920  '
  293. 2930  'copy a record from one file to another
  294. 2940  '
  295. 2950  IF A$="c" OR A$="C" THEN COLOR 15:PRINT"COPY MESSAGE"  ELSE 3450
  296. 2960  IF CONFERENCE=0 THEN PRINT"NAME OF CONFERENCE FILE TO COPY MESSAGE TO: ";:GOTO 3030
  297. 2970  PRINT "1) ";:COLOR 7:PRINT"COPY TO MAIN MESSAGE BASE   ";:COLOR 15
  298. 2980  PRINT "2) ";:COLOR 7:PRINT"COPY TO ANOTHER CONFERENCE MESSAGE BASE"
  299. 2990  COLOR 15:PRINT"YOUR SELECTION: ";:COLOR 7
  300. 3000  AK$=INPUT$(1):IF AK$="1" OR AK$="2" THEN 3010 ELSE BEEP:GOTO 3000
  301. 3010  PRINT AK$
  302. 3020  IF AK$="1" THEN FILE2$=MAINFILE$:GOTO 3100  ELSE PRINT"NAME OF CONFERENCE FILE TO COPY MESSAGE TO: ";
  303. 3030  LINE INPUT FILE2$:IF FILE2$="" THEN BEEP:GOTO 1390
  304. 3040  IF CONFERENCE AND AK$="2" THEN 3060
  305. 3050  IF CONFERENCE THEN 3070
  306. 3060  FILE2$=FILE2$+"M.DEF"
  307. 3070  FOR AK=1 TO LEN(FILE2$)   'convert to UPPER CASE
  308. 3080    TK=ASC(MID$(FILE2$,AK,1)):IF TK>96 THEN TK=TK-32:MID$(FILE$,AK,1)=CHR$(TK)
  309. 3090  NEXT AK
  310. 3100  OPEN"R",#2,FILE2$,128
  311. 3110  FIELD#2,128 AS S2$
  312. 3120  PRINT:PRINT"Checking messages ";
  313. 3130  GET#2,1:GOSUB 510
  314. 3140  KLE=VAL(MID$(S2$,1,8))   'number of last message on system
  315. 3150  KCJ=VAL(MID$(S2$,11,10))  'current caller number
  316. 3160  KREC1=VAL(MID$(S2$,52,5))  'record number of first record in the USERS file
  317. 3170  KNUR=VAL(MID$(S2$,57,5))  'record number of next available record in user file
  318. 3180  KHUR=VAL(MID$(S2$,62,5))  'record number of last record in USERS file
  319. 3190  KFMR=VAL(MID$(S2$,68,7))  'record number where first message begins
  320. 3200  KNMR=VAL(MID$(S2$,75,7))  'record number of next available record in msg file
  321. 3210  KHMR=VAL(MID$(S2$,82,7))  'record number of the last record in message file
  322. 3220  GOSUB 510
  323. 3230  IF KLE=0 OR KFMR=0 OR KNMR=0 OR KHMR=0 THEN CLOSE 2:PRINT:PRINT:DISP$="++ NOT A RBBS-PC MESSAGE FILE ++":GOSUB 610:GOSUB 570:CLOSE 2:FOR A=1 TO 2000:NEXT:GOTO 1390
  324. 3240  KNXTMSG=KNMR
  325. 3250  KLE = KLE + 1
  326. 3260  FOR A = FETCH TO FETCH + MSGLN - 1
  327. 3270     GET#1,A
  328. 3280     S1$=S$
  329. 3290     IF A>FETCH THEN 3330
  330. 3300     KMT$=STR$(KLE)
  331. 3310     IF LEN(KMT$)<4 THEN KMT$ = " " + KMT$ : GOTO 3310
  332. 3320     MID$(S1$,2,4) = KMT$
  333. 3330     LSET S2$ = S1$
  334. 3340     PUT #2,KNMR : KNMR = KNMR + 1
  335. 3350  NEXT A : PRINT "COPY COMPLETED ";:IF DISP$="" THEN 3460
  336. 3360  GET#2,1:S1$=S2$
  337. 3370  KNMR$=STR$(KNMR) : KLE$ = STR$(KLE)
  338. 3380  IF LEN(KLE$) < 8 THEN KLE$ =KLE$ + " " : GOTO 3380
  339. 3390  IF LEN(KNMR$)<7 THEN KNMR$=KNMR$ + " " : GOTO 3390
  340. 3400  MID$(S1$,1,8) = KLE$
  341. 3410  MID$(S1$,75,7)=KNMR$
  342. 3420  LSET S2$=S1$:PUT#2,1  'done
  343. 3430  CLOSE 2:CLS:GOTO 1390
  344. 3440  '
  345. 3450  BEEP:GOTO 1700
  346. 3460  BEEP:CLS:COLOR 31:PRINT"THIS VERSION HAS BEEN TAMPERED WITH.
  347. 3470  COLOR 7,0:PRINT"CALL DIAL-A-GURU BBS (718) 624-8614 TO DOWNLOAD LATEST UNTAMPERED VERSION"
  348. 3480  PRINT"OR WRITE WAYNE BOYD, 305 SCHERMERHORN STREET, BROOKLYN, NY 11217"
  349. 3490  PRINT"AND INCLUDE $15 AND WE WILL SEND IT TO YOU ON DISK."
  350. 3500  PRINT"THANK YOU, AND DON'T REMOVE THIS NOTICE!":PRINT:PRINT
  351. 3510  CLOSE:NEW
  352. 3520  ON ERROR GOTO 2020
  353. 3530  RAMA=1:GOTO 10
  354. 3540  GOTO 2020
  355.